<?php

    if (! defined('SIMPLE_TEST')) {
        define('SIMPLE_TEST', '../simpletest/');
    }
    require_once(SIMPLE_TEST . 'autorun.php');

    include '../Include/Include.php';


class DBClienteDAOTest extends UnitTestCase {

    public function DBClienteDAOTest() {
        $this->UnitTestCase();
    }

    public function testselect() {
        $miDBClienteDAOTest = new DBClienteDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $DBConn->consulta( "INSERT INTO cliente VALUES (-1, -1,
                            'Prueba Nombre', 'Prueba Apellido',
                            'Prueba Direccion', '0444-444-44-44',
                            'Prueba@gmail.com', 1, 1);" );

        $cliente = $miDBClienteDAOTest->select( -1 );

        $this->assertEqual( -1 , $cliente->getId() );
        $this->assertEqual( -1 , $cliente->getRazonSocial() );
        $this->assertEqual( 'Prueba Nombre' , $cliente->getNombre() );
        $this->assertEqual( 'Prueba Apellido' , $cliente->getApellido() );
        $this->assertEqual( 'Prueba Direccion' , $cliente->getDireccion() );
        $this->assertEqual( '0444-444-44-44' , $cliente->getTelefono() );
        $this->assertEqual( 'Prueba@gmail.com' , $cliente->getEmail() );
        $this->assertEqual( 1 , $cliente->getIdUsuario() );

        $DBConn->consulta("DELETE FROM cliente
                          WHERE CLT_ID = -1" );

    }

    public function testinsert() {
        $miDBClienteDAOTest = new DBClienteDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $cliente = new Cliente( -1 , -1, 'Prueba Nombre', 'Prueba Apellido',
                'Prueba Direccion', '0444-444-44-44', 'Prueba@gmail.com',
                1);

        $miDBClienteDAOTest->insert($cliente);
        $clienteSelect = $miDBClienteDAOTest->select( -1 );

        $this->assertEqual( $clienteSelect->getId() , $cliente->getId() );
        $this->assertEqual( $clienteSelect->getRazonSocial() , $cliente->getRazonSocial() );
        $this->assertEqual( $clienteSelect->getNombre() , $cliente->getNombre() );
        $this->assertEqual( $clienteSelect->getApellido() , $cliente->getApellido() );
        $this->assertEqual( $clienteSelect->getDireccion() , $cliente->getDireccion() );
        $this->assertEqual( $clienteSelect->getTelefono() , $cliente->getTelefono() );
        $this->assertEqual( $clienteSelect->getEmail() , $cliente->getEmail() );
        $this->assertEqual( $clienteSelect->getIdUsuario() , $cliente->getIdUsuario() );

        $DBConn->consulta("DELETE FROM cliente
                          WHERE CLT_ID = -1" );

    }

    public function testupdates() {
        $miDBClienteDAOTest = new DBClienteDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $cliente = new Cliente( -1 , -1, 'Prueba Nombre', 'Prueba Apellido',
                'Prueba Direccion', '0444-444-44-44', 'Prueba@gmail.com',
                1);

        $miDBClienteDAOTest->insert($cliente);
        $clienteUpdate = new Cliente( -1, -1, 'Prueba Nombre Update', 'Prueba Apellido Update',
                'Prueba Direccion Update', '0555-555-55-55',
                'PruebaUpdate@gmail.com', 1);

        $miDBClienteDAOTest->update($clienteUpdate);
        $clienteSelect = $miDBClienteDAOTest->select( -1 );

        $this->assertEqual( $clienteUpdate->getRazonSocial() , $clienteSelect->getRazonSocial() );
        $this->assertEqual( $clienteUpdate->getNombre() , $clienteSelect->getNombre() );
        $this->assertEqual( $clienteUpdate->getApellido() , $clienteSelect->getApellido() );
        $this->assertEqual( $clienteUpdate->getDireccion() , $clienteSelect->getDireccion() );
        $this->assertEqual( $clienteUpdate->getTelefono() , $clienteSelect->getTelefono() );
        $this->assertEqual( $clienteUpdate->getEmail() , $clienteSelect->getEmail() );
        $this->assertEqual( $clienteUpdate->getIdUsuario() , $clienteSelect->getIdUsuario() );

        $DBConn->consulta("DELETE FROM cliente
                          WHERE CLT_ID = -1" );

    }

    public function testdelete() {
        $miDBClienteDAOTest = new DBClienteDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $cliente = new Cliente( -1 , -1, 'Prueba Nombre', 'Prueba Apellido',
                'Prueba Direccion', '0444-444-44-44', 'Prueba@gmail.com',
                1);

        $miDBClienteDAOTest->insert($cliente);
        $DBConn->consulta( "SELECT * FROM cliente
                           WHERE CLT_ID = -1
                           AND CLT_STATUS = 1" );

        $fila = $DBConn->extraer_registro();
        $this->assertEqual( $fila['CLT_STATUS'], 1 );
        $miDBClienteDAOTest->delete( -1 );
        $fila2 = $DBConn->extraer_registro();
        $this->assertEqual( $fila2['CLT_STATUS'], 0 );

        $DBConn->consulta("DELETE FROM cliente
                          WHERE CLT_ID = -1" );

    }

    public function testlistaCliente() {
        $miDBClienteDAOTest = new DBClienteDAO();
        $listaCliente = $miDBClienteDAOTest->listaCliente();

        foreach ( $listaCliente as $cliente ) {
            $this->assertIsA( $cliente, "Cliente" );

        }

    }
}

?>
